hhkb
모의해킹

호스트기반모의해킹_38_윈도우 후속 공격

작성자 : Heehyeon Yoo|2025-12-14
# 모의해킹# Post-Exploitation# Windows# Information Gathering# Privilege Escalation

1. 개요

윈도우 후속 공격은 리눅스와 유사하게 정보 수집(Information Gathering)부터 시작된다. 하지만 윈도우는 리눅스보다 사용자 권한 모델과 시스템 구조가 복잡하기 때문에, 정확한 목표 설정과 시스템 이해가 선행되어야 한다.

2. 윈도우 사용자 및 권한 모델

2.1 사용자 유형(User Types)

  1. 로컬 유저(Local User): 특정 호스트(단일 컴퓨터) 내에서만 존재하고 권한을 가지는 사용자.
    • Local Low Privilege: 일반 사용자(예: User, RedRaccoon).
    • Local Administrator: 호스트 관리자 계정.
  2. 도메인 유저(Domain User): Active Directory(AD) 환경에서 도메인 컨트롤러에 의해 관리되는 사용자. 네트워크 내의 여러 리소스에 접근 가능하다.(BHPT 범위 외지만 필수 개념).
  3. 서비스 계정(Service Account): 윈도우 서비스를 실행하기 위한 특수 계정.
    • LocalSystem(NT AUTHORITY\SYSTEM): 최고 권한.
    • NetworkService, LocalService: 제한된 권한.

2.2 시스템 권한(SYSTEM vs Administrator)

  • Local Administrator: Session 1+(GUI 사용 가능, AD 접근 가능).
  • SYSTEM(NT AUTHORITY\SYSTEM): Session 0(GUI 없음, AD 접근 제한).
  • 오해와 진실: "SYSTEM이 무조건 최고다?" -> 틀림.
    • 실제 공격에서는 로컬 관리자 권한이 GUI 접근 및 내부망 이동(Lateral Movement)에 더 유리할 수 있다.
    • 로컬 관리자 권한만 얻으면 PsExec 등을 통해 언제든 SYSTEM 권한으로 상승 가능하다.

2.3 자격 증명 덤핑(Credential Dumping) 타겟

  • SAM(Security Account Manager): 로컬 사용자 계정 및 비밀번호 해시(NT Hash).
  • LSA(Local Security Authority) Secrets: 서비스 계정 암호, 캐시된 도메인 자격 증명.
  • LSASS(Local Security Authority Subsystem Service): 메모리에 로드된 활성 사용자의 평문/해시 비밀번호.
  • DPAPI(Data Protection API): Chrome 비밀번호, 무선 네트워크 키 등을 암호화하는 마스터 키.

3. 정보 수집 실습(Information Gathering)

3.1 사용자 및 그룹 확인

  • whoami /priv: 현재 사용자의 권한(Privileges) 확인(예: SeShutdownPrivilege 등).
  • net user [username]: 특정 사용자 상세 정보(소속 그룹 확인).
    • Remote Desktop Users: RDP 접근 가능 그룹.
    • Remote Management Users: WinRM 접근 가능 그룹.
  • net localgroup: 로컬 그룹 목록 확인.
  • Get-LocalUser, Get-LocalGroup: PowerShell Cmdlet 활용.
  • C:\Users\: 사용자 홈 디렉토리 확인으로 이전 로그인 사용자 추적.

3.2 시스템 및 네트워크 정보

  • hostname: 호스트 이름(서버 용도 유추: Web01, Dev-DB).
  • systeminfo: OS 버전, Hotfix(보안 패치) 설치 여부(Kernel Exploit 가능성 판단).
  • winver: 윈도우 빌드 번호 확인(예: 1809, 22H2).
  • ipconfig /all: IP 주소, Gateway, DNS, NIC 개수(Dual-homed 여부 확인).
  • route print: 라우팅 테이블 확인(내부망 연결 확인).
  • arp -a: 동일 서브넷 내의 통신 기록 확인.

3.3 프로세스 및 서비스

  • Get-Process(ps): 실행 중인 프로세스 목록. EDR/백신 솔루션(Falcon, SentinelOne 등) 탐지.
  • Get-Service: 설치된 서비스 목록.
    • Get-Service | Where-Object {$_.Status -eq 'Running'}: 실행 중인 서비스만 필터링.
    • 타사 서비스(Web Server, DB 등) 식별.
  • netstat -ano: 열린 포트 및 연결 정보(PID와 매핑하여 어떤 프로세스가 포트를 열고 있는지 확인).

3.4 파일 및 소프트웨어

  • C:\Program Files, C:\Program Files(x86): 설치된 소프트웨어 확인.
  • C:\opt(드물지만 존재 가능), C:\Users\Public: 사용자 지정 설치 경로.
  • LastWriteTime: 최근 수정된 파일을 찾아 최근 활동 내역 파악.

3.5 하드코딩된 비밀(Hardcoded Secrets) 탐색

사용자나 관리자가 실수로 남긴 자격 증명을 찾는다.

  1. 설정 파일(.config, .ini, .xml):
    Get-ChildItem -Recurse -Include *.config,*.ini,*.xml -ErrorAction SilentlyContinue | Select-String "password"
    
  2. 사용자 파일(.txt, .xlsx): "비밀번호.txt", "서버접속.xlsx" 등.
  3. PowerShell 히스토리:
    • 경로: (Get-PSReadlineOption).HistorySavePath
    • 이전 명령어 기록에서 평문 비밀번호(예: net use 또는 스크립트 인자) 노출 여부 확인.